hvm svm: No guest access to SVM MSRs.
authorkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Thu, 21 Jun 2007 14:17:31 +0000 (15:17 +0100)
committerkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Thu, 21 Jun 2007 14:17:31 +0000 (15:17 +0100)
Signed-off-by: Mats Petersson <mats.petersson@amd.com>
xen/arch/x86/hvm/svm/svm.c

index ca259286d2091b8e82d4a5c244ad42d6b7785a6c..82e1bad024937fbc405644c336a8c96b91fa880d 100644 (file)
@@ -2086,9 +2086,11 @@ static inline void svm_do_msr_access(
         case MSR_IA32_TIME_STAMP_COUNTER:
             msr_content = hvm_get_guest_time(v);
             break;
+
         case MSR_IA32_APICBASE:
             msr_content = vcpu_vlapic(v)->hw.apic_base_msr;
             break;
+
         case MSR_EFER:
             msr_content = v->arch.hvm_svm.cpu_shadow_efer;
             break;
@@ -2110,6 +2112,10 @@ static inline void svm_do_msr_access(
             msr_content = 0;
             break;
 
+        case MSR_K8_VM_HSAVE_PA:
+            svm_inject_exception(v, TRAP_gp_fault, 1, 0);
+            break;
+
         default:
             if ( rdmsr_hypervisor_regs(ecx, &eax, &edx) ||
                  rdmsr_safe(ecx, eax, edx) == 0 )
@@ -2143,9 +2149,15 @@ static inline void svm_do_msr_access(
             hvm_set_guest_time(v, msr_content);
             pt_reset(v);
             break;
+
         case MSR_IA32_APICBASE:
             vlapic_msr_set(vcpu_vlapic(v), msr_content);
             break;
+
+        case MSR_K8_VM_HSAVE_PA:
+            svm_inject_exception(v, TRAP_gp_fault, 1, 0);
+            break;
+
         default:
             if ( !long_mode_do_msr_write(regs) )
                 wrmsr_hypervisor_regs(ecx, regs->eax, regs->edx);